إنشاء تطبيق جانغو وتوصيله بقاعدة بيانات: دليل شامل ومفصل
تعد منصة جانغو (Django) من أشهر أُطُر تطوير الويب في عالم البرمجة اليوم، لما تقدمه من مزايا تسهل عملية بناء تطبيقات ويب قوية، قابلة للتوسع، وآمنة. تعتمد جانغو بشكل كبير على لغة بايثون التي تتميز ببساطتها وسهولة تعلمها، مما يجعلها الخيار الأول للكثير من المطورين سواء كانوا مبتدئين أو محترفين. من بين أهم المهام التي يواجهها المطور عند بناء تطبيق باستخدام جانغو هي ربط التطبيق بقاعدة بيانات، حيث أن البيانات هي جوهر أي تطبيق حديث.
في هذا المقال سنتناول بالتفصيل خطوات إنشاء تطبيق جانغو من الصفر، شرح كيفية إعداد البيئة البرمجية، إنشاء المشروع، تطوير تطبيق داخله، وربطه بقاعدة بيانات قوية، مع توضيح كيفية التعامل مع قواعد البيانات المختلفة مثل SQLite، PostgreSQL، MySQL، وغيرها. كما سنتطرق إلى كيفية إدارة النماذج (Models)، التعامل مع عمليات الهجرة (Migrations)، وكيفية إجراء استعلامات معقدة من خلال ORM الخاص بجانغو.
1. مقدمة حول جانغو وأهمية قواعد البيانات
جانغو هو إطار عمل ويب مفتوح المصدر يعتمد على لغة بايثون، تم تصميمه لتسهيل بناء تطبيقات ويب متطورة بسرعة وكفاءة عالية. واحدة من المميزات الرئيسية لجانغو هي إمكانية ربطه بسهولة مع قواعد البيانات المتنوعة وإدارة البيانات من خلال نظام ORM (Object-Relational Mapping) الذي يسمح بالتعامل مع قواعد البيانات عبر كائنات برمجية دون الحاجة لكتابة استعلامات SQL بشكل مباشر.
تخزين البيانات واسترجاعها بشكل منظم وفعال هو عنصر أساسي في كل تطبيق ويب. لذلك ربط جانغو بقاعدة بيانات قوية وموثوقة هو خطوة أساسية، سواء كانت قاعدة بيانات بسيطة مثل SQLite المستخدمة بشكل افتراضي أثناء التطوير، أو قواعد بيانات متقدمة مثل PostgreSQL أو MySQL التي تستخدم في بيئات الإنتاج.
2. إعداد البيئة البرمجية لإنشاء تطبيق جانغو
قبل البدء في بناء التطبيق، يجب تجهيز البيئة البرمجية اللازمة، وتتضمن هذه الخطوات:
أ. تثبيت لغة بايثون
جانغو مبني على بايثون، لذا يجب التأكد من تثبيت نسخة حديثة من بايثون (يفضل الإصدار 3.8 فأحدث). يمكن تنزيل بايثون من الموقع الرسمي python.org.
ب. إنشاء بيئة افتراضية (Virtual Environment)
للحفاظ على تنظيم المكتبات والاعتماديات، من الأفضل إنشاء بيئة افتراضية خاصة بالمشروع:
bashpython -m venv env
source env/bin/activate # على لينكس أو ماك
env\Scripts\activate # على ويندوز
ج. تثبيت جانغو
بعد تفعيل البيئة الافتراضية، يتم تثبيت جانغو عبر pip:
bashpip install django
3. إنشاء مشروع جانغو جديد
يمكن الآن إنشاء مشروع جانغو جديد باستخدام الأمر:
bashdjango-admin startproject myproject
هذا الأمر سينشئ مجلدًا جديدًا باسم myproject يحتوي على الملفات الأساسية للمشروع، مثل:
-
manage.py: أداة لإدارة المشروع. -
مجلد
myprojectالذي يحتوي على ملفات الإعدادات (settings.py) وملف التوجيه الرئيسي (urls.py).
4. إنشاء تطبيق داخل المشروع
جانغو يعتمد على فكرة التطبيقات الصغيرة ضمن المشروع الكبير. لإنشاء تطبيق داخل المشروع:
bashcd myproject
python manage.py startapp myapp
يتم إنشاء مجلد جديد باسم myapp يحتوي على هيكل التطبيق، مثل ملفات النماذج (models.py)، العروض (views.py)، والملفات الخاصة بالاختبارات.
5. إعداد قاعدة البيانات في جانغو
أ. قاعدة البيانات الافتراضية SQLite
جانغو يأتي بإعداد SQLite مدمج بشكل افتراضي، وهي قاعدة بيانات خفيفة تناسب مشاريع التطوير والاختبار.
يمكن العثور على إعدادات SQLite في ملف settings.py داخل مجلد المشروع:
pythonDATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
في هذه الحالة، سيتم إنشاء ملف db.sqlite3 داخل مجلد المشروع كقاعدة البيانات.
ب. استخدام قواعد بيانات أخرى
لبيئات الإنتاج، يفضل استخدام قواعد بيانات أكثر قوة ومرونة مثل PostgreSQL أو MySQL. هنا مثال لإعداد PostgreSQL في ملف settings.py:
pythonDATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'mydatabase',
'USER': 'myuser',
'PASSWORD': 'mypassword',
'HOST': 'localhost',
'PORT': '5432',
}
}
للاستخدام الصحيح، يجب تثبيت مكتبة psycopg2 عبر الأمر:
bashpip install psycopg2-binary
وبالمثل، لاستخدام MySQL يتم ضبط الإعدادات على النحو التالي:
pythonDATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'mydatabase',
'USER': 'myuser',
'PASSWORD': 'mypassword',
'HOST': 'localhost',
'PORT': '3306',
}
}
ويجب تثبيت مكتبة mysqlclient أو بدائلها حسب النظام:
bashpip install mysqlclient
6. إنشاء النماذج (Models) لتمثيل البيانات
يتم تعريف نماذج البيانات في ملف models.py داخل التطبيق myapp. كل نموذج يمثل جدولًا في قاعدة البيانات، وكل خاصية داخل النموذج تمثل عمودًا في هذا الجدول.
مثال على نموذج بسيط لتمثيل مستخدم:
pythonfrom django.db import models
class User(models.Model):
username = models.CharField(max_length=150, unique=True)
email = models.EmailField(unique=True)
date_joined = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.username
في هذا المثال، لدينا جدول باسم User يحتوي على أعمدة username، email، وdate_joined.
7. إنشاء وترحيل (Migrate) قاعدة البيانات
بعد إنشاء أو تعديل النماذج، يجب إنشاء ترحيلات (migrations) لتنفيذ التغييرات على قاعدة البيانات.
يتم ذلك عبر الأمرين التاليين:
bashpython manage.py makemigrations python manage.py migrate
-
makemigrations: يقوم بإنشاء ملفات ترحيل تصف التغييرات التي ستتم على قاعدة البيانات. -
migrate: يقوم بتطبيق هذه التغييرات فعليًا على قاعدة البيانات.
8. إنشاء واجهة إدارة جانغو لإدارة البيانات
جانغو يوفر لوحة تحكم (Admin) جاهزة لإدارة بيانات التطبيق.
لتفعيلها، يجب تسجيل النموذج في ملف admin.py داخل التطبيق:
pythonfrom django.contrib import admin
from .models import User
admin.site.register(User)
ثم يمكن تشغيل السيرفر:
bashpython manage.py runserver
والولوج إلى لوحة الإدارة عبر المتصفح على الرابط:
arduinohttp://127.0.0.1:8000/admin
يتطلب تسجيل مستخدم مسؤول أولي:
bashpython manage.py createsuperuser
9. إنشاء العروض (Views) لعرض البيانات
العروض هي المسؤولة عن التعامل مع طلبات المستخدمين وإرجاع المحتوى المناسب. يمكن كتابة العروض في ملف views.py داخل التطبيق.
مثال على عرض يعرض قائمة المستخدمين:
pythonfrom django.shortcuts import render
from .models import User
def user_list(request):
users = User.objects.all()
return render(request, 'user_list.html', {'users': users})
10. إعداد قوالب (Templates) لعرض المحتوى
جانغو يعتمد على نظام القوالب لعرض صفحات HTML.
يجب إنشاء مجلد templates داخل مجلد التطبيق أو المشروع، ثم إنشاء ملف user_list.html:
htmlhtml>
<html>
<head>
<title>قائمة المستخدمينtitle>
head>
<body>
<h1>المستخدمونh1>
<ul>
{% for user in users %}
<li>{{ user.username }} - {{ user.email }}li>
{% endfor %}
ul>
body>
html>
11. توجيه عناوين URL
يجب ربط العروض بعناوين URL لكي يتمكن المستخدم من الوصول إليها.
في ملف urls.py الخاص بالتطبيق أو المشروع:
pythonfrom django.urls import path
from .views import user_list
urlpatterns = [
path('users/', user_list, name='user_list'),
]
ثم في ملف urls.py الخاص بالمشروع، تضمين عناوين التطبيق:
pythonfrom django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('myapp.urls')),
]
12. التفاعل مع قاعدة البيانات من خلال ORM
جانغو يقدم ORM قوي يمكن استخدامه للقيام بكافة عمليات قاعدة البيانات مثل الإدخال، التحديث، الحذف والاستعلام.
مثال على إضافة مستخدم جديد:
تحديث مستخدم:
حذف مستخدم:
pythonuser = User.objects.get(username='ahmed')
user.delete()
استعلامات متقدمة:
-
الحصول على جميع المستخدمين الذين تم الانضمام لهم خلال آخر شهر:
pythonfrom django.utils import timezone
from datetime import timedelta
one_month_ago = timezone.now() - timedelta(days=30)
recent_users = User.objects.filter(date_joined__gte=one_month_ago)
13. التعامل مع إعدادات متقدمة لقاعدة البيانات
في المشاريع الكبيرة، يمكن ضبط إعدادات متقدمة مثل:
-
استخدام إعدادات الاتصال المتعددة لقواعد بيانات مختلفة.
-
تفعيل التخزين المؤقت (Caching) لتحسين الأداء.
-
ضبط قواعد الترحيل لتتناسب مع التغييرات في قاعدة البيانات بدون فقدان البيانات.
14. الجوانب الأمنية عند توصيل جانغو بقاعدة بيانات
يجب الحرص على تأمين بيانات الاتصال بقاعدة البيانات وعدم تضمين كلمات المرور مباشرة في ملف settings.py عند استخدام بيئات الإنتاج. يمكن استخدام متغيرات البيئة (Environment Variables) أو ملفات إعدادات منفصلة غير مضمنة في التحكم بالإصدارات.
15. ملخص جدول مقارنة قواعد البيانات الشائعة مع جانغو
| القاعدة | المزايا الرئيسية | عيوب محتملة | التوافق مع جانغو |
|---|---|---|---|
| SQLite | مدمجة، سهلة الاستخدام، بدون إعدادات | ليست مناسبة للبيئات الإنتاجية الكبيرة | مدعومة افتراضيًا |
| PostgreSQL | متقدمة، تدعم الاستعلامات المعقدة، أداء عالي | إعداد معقد نسبيًا | مدعومة بشكل ممتاز |
| MySQL | شعبية، أداء جيد، دعم واسع | مشاكل في بعض الميزات المعقدة | مدعومة بشكل جيد |
| Oracle | موثوقة، موجهة للمؤسسات الكبيرة | تكلفة عالية، إعداد معقد | مدعومة ولكن أقل شيوعًا |
| MariaDB | مفتوحة المصدر، شبيهة بـ MySQL | بعض الاختلافات الطفيفة | مدعومة |
16. الخلاصة
إن إنشاء تطبيق ويب باستخدام جانغو وربطه بقاعدة بيانات يمثل عملية متكاملة تتضمن عدة خطوات هامة تبدأ من تجهيز البيئة، إنشاء المشروع والتطبيق، تحديد النماذج، إعداد قاعدة البيانات، ثم تطوير العروض والتعامل مع البيانات باستخدام ORM. مع توفير جانغو نظامًا متكاملاً لإدارة قواعد البيانات عبر نظام الترحيل والأدوات الإدارية، يمكن للمطور بناء تطبيقات قوية ومتطورة بسهولة مع ضمان الأداء والأمان.
بفضل مرونة جانغو ودعمه لمختلف قواعد البيانات، يمكن للمطورين اختيار قاعدة البيانات المناسبة وفق متطلبات المشروع، مع إمكانية توسيع التطبيق مستقبلاً دون الحاجة لإعادة تصميم الهيكل الأساسي. وهذا ما يجعل جانغو خيارًا مثاليًا لبناء تطبيقات الويب الحديثة التي تعتمد على البيانات بشكل رئيسي.
المصادر والمراجع
-
الموقع الرسمي لجانغو: https://www.djangoproject.com
-
الوثائق الرسمية لجانغو حول قواعد البيانات ونظام ORM: https://docs.djangoproject.com/en/stable/topics/db/
هذا المقال يقدم شرحًا تفصيليًا وموسعًا حول كيفية إنشاء تطبيق جانغو وتوصيله بقاعدة بيانات بشكل علمي ومنظم، مع التركيز على التفاصيل الفنية التي تهم مطوري الويب العرب.

